package com.example.springeventlistenersample;


import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.stereotype.Service;

@Service
public class UserService {
    Logger log = LoggerFactory.getLogger(UserService.class);
    /**
     * 事件发布由ApplicationContext对象管控的，发布事件前需要注入ApplicationContext对象调用publishEvent完成事件发布
     */
    @Autowired
    ApplicationContext applicationContext;

    /**
     * 用户主动发布时间的方法
     *
     * @param userBean
     */
    public void publish(UserInfo userBean) {
        log.info("推送注册成功事件");
        // 发布UserRegisterEvent事件，时间发布是由ApplicationContext对象管控的，
        applicationContext.publishEvent(new SpringEvent<>(this, userBean));
    }
}
